package gdconf

import (
	"server_cluster/common/logger"
)

// 角色天赋配置表

type RoleTalentConfig struct {
	TalentId          int32         `csv:"Id" gorm:"primary_key;autoIncrement:false"` // 天赋id
	TalentGroup       int32         `csv:"Talentgroup,omitempty"`                     // 天赋组id
	DefaultUnlock     bool          `csv:"Defaultunlock,omitempty"`                   // 是否默认解锁
	NeedTalentCompose int32         `csv:"PreconditionsCompose,omitempty"`            // 解锁所需天赋组合逻辑
	NeedTalentList    IntArrayArray `csv:"Preconditions,omitempty"`                   // 解锁所需天赋列表
	MaxLevel          int32         `csv:"Maxlevel,omitempty"`                        // 天赋最大等级
	EffectGroup       int32         `csv:"Effect,omitempty"`                          // 天赋效果组id
}

func (rt *RoleTalentConfig) TableName() string {
	return "config_role_talent"
}

func (g *GameDataConfig) saveRoleTalentConfig() {
	saveTableToDb[RoleTalentConfig](g.Db, readTable[RoleTalentConfig](g.CsvPathPrefix+"role_talent_new.csv"))
}

func (g *GameDataConfig) loadRoleTalentConfig() {
	g.GameDataMaps.RoleTalentConfigMap = make(map[int32]*RoleTalentConfig)
	for _, roleTalentConfig := range loadTableFromDb[RoleTalentConfig](g.Db) {
		g.GameDataMaps.RoleTalentConfigMap[roleTalentConfig.TalentId] = roleTalentConfig
	}
	logger.Info("RoleTalentConfig Count: %v", len(g.GameDataMaps.RoleTalentConfigMap))
}

func GetRoleTalentConfig(talentId int32) *RoleTalentConfig {
	value, exist := CONF.GameDataMaps.RoleTalentConfigMap[talentId]
	if !exist {
		logger.Error("[ConfigNotFound] RoleTalentConfig, talentId: %v", talentId)
		return nil
	}
	return value
}

func GetRoleTalentConfigMap() map[int32]*RoleTalentConfig {
	return CONF.GameDataMaps.RoleTalentConfigMap
}
